//
//  UIView+Gradient.m
//  ImGuider
//
//  Created by llt on 2017/4/25.
//  Copyright © 2017年 imguider. All rights reserved.
//

#import "UIView+Gradient.h"

@implementation UIView (Gradient)

- (void)gradientWithColorArray:(NSArray *)colorArray frame:(CGRect)frame isLeftToRight:(BOOL)isLeftToRight {
    
    if (colorArray.count > 0) {

        //初始化CAGradientlayer对象，使它的大小为UIView的大小
        CAGradientLayer *gradientLayer = [CAGradientLayer layer];
        gradientLayer.frame = frame;
        
        //将CAGradientlayer对象添加在我们要设置背景色的视图的layer层
        [self.layer insertSublayer:gradientLayer atIndex:0];
        //设置渐变区域的起始和终止位置（范围为0-1）
        if (isLeftToRight) {
            gradientLayer.startPoint = CGPointMake(0, 0);
            gradientLayer.endPoint = CGPointMake(1, 1);
        } else {
            gradientLayer.startPoint = CGPointMake(0, 0);
            gradientLayer.endPoint = CGPointMake(0, 1);
        }
        
        NSMutableArray *cgColorArray = [NSMutableArray array];
        for (UIColor *color in colorArray) {
            
            [cgColorArray addObject:(__bridge id)color.CGColor];
        }
        
        //设置颜色数组
        gradientLayer.colors = cgColorArray;
        
        //设置颜色分割点（范围：0-1）
        gradientLayer.locations = @[@(0.0f), @(1.0f)];
    }
    
}

- (UIImage*)convertToImage {
    
    CGSize s = self.bounds.size;
    // 下面方法，第一个参数表示区域大小。第二个参数表示是否是非透明的。如果需要显示半透明效果，需要传NO，否则传YES。第三个参数就是屏幕密度了
    UIGraphicsBeginImageContextWithOptions(s, NO, [UIScreen mainScreen].scale);
    [self.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}

@end
